Path Traversal

AI
qwen-3-235b-a22b-instruct-2507
작성자
익명
작성일
2025.09.03
조회수
8
버전
v1

Path Traversal

개요

Path Traversal(경 탐색)은 보 분야에서 중요한 취점 유형 중로, 공격자가 시스템의 파일 시스템 내에서 권한이 없는 디렉터리나 파일에 접근할 수 있도록 만드는 입력 검증 실패로 인해 발생하는 보안 위협입니다. 이 취약점은 주로 웹 애플리케이션에서 사용자 입력을 통해 파일 경로를 동적으로 결정할 때, 입력값에 대한 적절한 검증이나 필터링이 없을 경우 노출됩니다.

Path Traversal 공격은 "디렉터리 탐색(Directory Traversal) 공격" 또는 "..\..\ 공격"으로도 불리며, 공격자가 ../ 또는 ..\과 같은 상대 경로 기호를 악용하여 상위 디렉터리로 이동함으로써 시스템의 중요한 파일(예: /etc/passwd, C:\Windows\win.ini)을 읽거나, 경우에 따라 수정하거나 삭제할 수 있게 됩니다.

이 문서에서는 Path Traversal의 원리, 공격 방식, 예시, 영향, 그리고 방어 방법에 대해 체계적으로 설명합니다.


Path Traversal의 원리

Path Traversal은 사용자 입력을 통해 파일 경로를 생성하는 시스템에서 발생합니다. 예를 들어, 웹 애플리케이션이 사용자 요청에 따라 특정 파일을 제공하는 기능을 제공할 때, 다음과 같은 코드가 사용될 수 있습니다:

filename = request.GET.get('file')
path = "/var/www/files/" + filename
return send_file(path)

이 경우, 사용자가 file=../../../../etc/passwd와 같은 값을 입력하면, 최종 경로는 /var/www/files/../../../../etc/passwd가 되며, 이는 시스템 루트 디렉터리 기준으로 /etc/passwd를 가리킵니다. 이렇게 상대 경로를 이용해 시스템의 예상치 못한 위치의 파일에 접근하는 것이 Path Traversal의 핵심입니다.


공격 방식과 예시

1. 기본적인 공격 패턴

가장 일반적인 공격은 ../ 시퀀스를 반복적으로 사용해 상위 디렉터리로 이동하는 것입니다. 예를 들어:

  • http://example.com/download?file=../../../../etc/passwd
  • http://example.com/view?path=../../config/database.ini

이러한 요청은 서버가 예상하지 못한 위치의 파일을 반환하게 만들 수 있습니다.

2. 인코딩을 이용한 우회

일부 시스템은 ../ 문자열을 직접 차단할 수 있으나, 공격자는 URL 인코딩이나 유니코드 인코딩을 통해 이를 우회할 수 있습니다.

  • ..%2F → URL 디코딩 후 ../
  • %2e%2e%2f../의 각 문자를 인코딩한 형태
  • ..\ → Windows 시스템에서 사용되는 역슬래시

이러한 인코딩된 입력이 필터링되지 않으면, 여전히 공격이 성공할 수 있습니다.

3. Null Byte 삽입 (과거 주로 발생)

과거 PHP와 같은 일부 언어에서는 Null Byte(%00)를 문자열 끝으로 인식하여, 다음과 같은 공격이 가능했습니다:

http://example.com/read.php?file=../../etc/passwd%00.jpg

이 경우, 시스템은 passwd 파일을 읽은 후 .jpg 부분은 무시하게 됩니다. 하지만 최신 시스템에서는 대부분 이 문제가 해결되었습니다.


영향과 위험성

Path Traversal 공격이 성공할 경우 다음과 같은 심각한 피해가 발생할 수 있습니다:

  • 시스템 정보 유출: /etc/passwd, /etc/shadow, C:\Windows\win.ini 등 민감한 시스템 파일 노출
  • 애플리케이션 설정 유출: config.php, web.xml, .env 파일 등에 포함된 데이터베이스 비밀번호, API 키 노출
  • 코드 실행 가능성: 일부 환경에서는 파일 업로드와 결합되어 악성 스크립트 실행으로 이어질 수 있음
  • 전체 시스템 침해: 관리자 권한으로 실행되는 경우, 시스템 전체를 제어당할 위험

OWASP에서는 Path Traversal을 웹 애플리케이션 취약점 상위 10개(OWASP Top 10)에 포함된 A05:2021 – Security Misconfiguration 또는 A01:2021 – Broken Access Control과 관련된 문제로 분류하기도 합니다.


방어 방법

1. 입력 검증 및 정규화

  • 사용자 입력에 ../, ..\, /, \ 등의 경로 이동 문자열이 포함되지 않도록 필터링
  • 입력값을 정규화(normalization)하여 인코딩된 문자열도 검사
  • 허용 가능한 파일명만을 허용하는 화이트리스트(Whitelist) 방식 사용

예시 (Python):

import os

def is_safe_path(basedir, path):
    return os.path.realpath(path).startswith(basedir)

2. 기준 디렉터리 고정

  • 모든 파일 접근을 특정 기준 디렉터리 내로 제한
  • 절대 경로를 사용하고, 외부 입력으로부터 경로를 직접 조합하지 않음

3. 파일명 매핑 사용

  • 사용자 입력을 실제 파일 경로가 아닌, 사전 정의된 식별자로 매핑
  • 예: file_id=1/safe_dir/report_2023.pdf

이 방식은 사용자에게 실제 파일 경로를 노출하지 않아 보안성이 높습니다.

4. 보안 라이브러리 및 프레임워크 활용


관련 표준 및 가이드라인

  • OWASP Top 10: Broken Access Control, Security Misconfiguration
  • CWE-22: Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')
  • NIST SP 800-53: AC-6(4) - Least Privilege, SC-7 - Boundary Protection

참고 자료


Path Traversal는 단순해 보이지만, 철저한 입력 검증이 없을 경우 치명적인 결과를 초래할 수 있는 취약점입니다. 개발자는 사용자 입력을 절대 신뢰하지 말고, 항상 검증, 정규화, 접근 제어를 통해 안전한 파일 시스템 접근을 보장해야 합니다.

AI 생성 콘텐츠 안내

이 문서는 AI 모델(qwen-3-235b-a22b-instruct-2507)에 의해 생성된 콘텐츠입니다.

주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.

이 AI 생성 콘텐츠가 도움이 되었나요?